package QueueToStack;

import java.util.LinkedList;
import java.util.Queue;

class MyStack {
    // 定义2个队列 来实现栈的功能
    private Queue<Integer> q1;
    private Queue<Integer> q2;


    public MyStack() {
        q1=new LinkedList();
        q2=new LinkedList();
    }

    //将元素 x 压入栈顶。
    public void push(int x) {
        if(this.empty()){
            q1.offer(x);
            return ;
        }
        q1.offer(x);
    }

    //移除并返回栈顶元素。
    public int pop() {
        if(empty()){
            return -1;
        }
        int n=0;
        // 将q1 中size-1个元素全部放到q2中，然后q1 中就是栈顶元素
        while(!q1.isEmpty() &&q1.size()!=1){
            n=q1.poll();
            q2.offer(n);
        }
        Queue tmp=q1;
        q1=q2;
        q2=tmp;
        return q2.poll();
    }

    //返回栈顶元素。
    public int top() {
        if(empty()){
            return -1;
        }
        int n=0;
        // 将q1 中size-1个元素全部放到q2中，然后q1 中就是栈顶元素
        while(!q1.isEmpty()){
            n=q1.poll();
            q2.offer(n);

        }
        Queue tmp=q1;
        q1=q2;
        q2=tmp;
        return n;
    }

    //如果栈是空的，返回 true ；否则，返回 false 。
    public boolean empty() {
        return q1.isEmpty() && q2.isEmpty();
    }
}